package com.lfy.service;

import com.lfy.domain.dto.ShareFileDTO;
import com.lfy.domain.dto.WebShareCheckDTO;
import com.lfy.domain.vo.WebFileVO;
import com.lfy.domain.vo.WebShareFileDetailVO;
import com.lfy.domain.vo.WebShareFileVO;
import com.lfy.modules.common.custom.WebShareDownloadVO;
import com.lfy.modules.common.domain.R;
import org.springframework.http.ResponseEntity;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface WebDiskService {
    /**
     * 获取网盘列表
     *
     * @param url rul
     * @return R
     */
    R<List<WebFileVO>> getFileList(String url);

    /**
     * 下载文件
     *
     * @param url url
     * @param id  id
     */
    void download(String url, Long id, HttpServletResponse response);

    /**
     * 获取分享文件
     *
     * @param shareKey  shareKey
     * @param shareCode shareCode
     * @return R<WebShareFileVO>
     */
    R<WebShareFileVO> getShareFile(String shareKey, String shareCode);

    /**
     * 检查分享码是否有效
     *
     * @return R<String>
     */
    R<String> checkShareCode(WebShareCheckDTO dto);

    /**
     * 获取分享文件列表
     * @param dto dto
     * @return R<List<WebShareFileDetailVO>>
     */
    R<List<WebShareFileDetailVO>> getShareFileList(ShareFileDTO dto);

    /**
     * 批量下载文件
     * @param ids 文件id集合
     * @param token token
     * @return List<ResponseEntity<byte[]>>
     */
    R<List<WebShareDownloadVO>> batchDownload(List<Long> ids, String token);

    /**
     * 下载文件到流中
     * @param id id
     * @param token token
     */
    void downloadToStream(Long id, String token,HttpServletResponse response);

    R<List<Long>> getNoFolderFilesId(String token, List<Long> ids);
}

